// Interface to a state object
// All states will have a pointer to the render target (window) and the one instance of the input manager
#ifndef IGAMESTATE_H_
#define IGAMESTATE_H_

#include "..\..\external_libs\SFML\include\SFML\Graphics\RenderTarget.hpp"
#include "..\..\external_libs\SFML\include\SFML\System\Time.hpp"

class CInputManager;

class IGameState
{
private:
protected:
	sf::RenderTarget*	m_pRenderTarget;
	CInputManager*		m_pInput;
public:
	IGameState(sf::RenderTarget& rt, CInputManager& input) 
	{
		m_pRenderTarget = &rt;
		m_pInput		= &input;
	}
	virtual ~IGameState(void) {}

	virtual void Enter(void) = 0;
	virtual void Exit(void) = 0;
	virtual void Render(void) = 0;
	virtual void Update(sf::Time timeElapsed) = 0;
	virtual bool Input(void) = 0;
};

#endif